import numpy as np

arr = np.array([3, 2, 0, 1])
newarr = np.sort(arr)
print("np.sort(arr) :", newarr, "new Array :", newarr.base is None)

#按字符顺序来排序，
arr = np.array(['banana', 'cherry', 'apple'])
print(np.sort(arr))

arr = np.array(['香蕉', '草莓', '苹果'])
print(np.sort(arr)) #['苹果' '草莓' '香蕉'] 显然不是按照中文的习惯来排序的

#中文按照发音来排序
import locale
# 设置中文环境
locale.setlocale(locale.LC_COLLATE, 'zh_CN.UTF-8')
arr = np.array(['banana', 'cherry', 'apple'])
print(np.sort(arr))

arr = np.array(['香蕉', '草莓', '苹果'])
# 使用 sorted 进行排序，key 为 strxfrm 函数提供的排序键
sorted_arr = sorted(arr, key=locale.strxfrm) #['草莓', '苹果', '香蕉']
print(sorted_arr)

#Sorting a 2-D Array
arr = np.array([[3, 2, 4], [5, 0, 1]])
print(np.sort(arr)) #按行排序，相当于axis=1，就是row内部排序
print(np.sort(arr,axis=0)) #按列排序，每列进行排序，axis的含义就是行列

### 重点 axis的解释
'''
在一个二维数组中，axis 参数的取值范围是 -2 到 1，因为二维数组只有两个轴：0（列）和 1（行）。对于 axis=2 的情况，这不适用于二维数组，因为它们没有第三个轴。
然而，对于三维或更高维度的数组，axis=2 是有效的。例如，在一个三维数组中，axis=0 代表深度（沿着每个二维切片），axis=1 代表行（每个切片内部的行），而 axis=2 代表列（每个切片内部的列）。
在你给出的例子中，如果你尝试使用 axis=2 在一个二维数组上排序，NumPy 将会抛出一个异常，因为这超出了该数组的轴数。
'''
